﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Windows.Forms;

namespace CProd
{
    public partial class frmSaveViradas : Form
    {
        #region Declarações

        SqlDataAdapter _daDados;
        DataTable dtDados = new DataTable("dtDados");
        DataView _dvDados;

        #endregion

        public frmSaveViradas()
        { InitializeComponent(); }

        private void frmSaveViradas_Load(object sender, EventArgs e)
        {
            _daDados = new SqlDataAdapter("SELECT * From Producao", frmEntrada.conn);
            _daDados.Fill(dtDados);

            _dvDados = dtDados.DefaultView;
            _dvDados.Sort = "Linha Asc";

            int myRowCount = _dvDados.Count;

            if (myRowCount <= 0) return;

            #region Preenche Combos
            for (int i = 0; i < myRowCount; i++)
            {
                if (i == 0)
                {
                    cbLinhas1.Items.Add(_dvDados[i]["Linha"].ToString().Trim());
                    cbLinhas2.Items.Add(_dvDados[i]["Linha"].ToString().Trim());
                }
                else
                {
                    if (_dvDados[i]["Linha"].ToString() != _dvDados[i - 1]["Linha"].ToString())
                    {
                        cbLinhas1.Items.Add(_dvDados[i]["Linha"].ToString().Trim());
                        cbLinhas2.Items.Add(_dvDados[i]["Linha"].ToString().Trim());
                    }
                }
            }
            #endregion

            cbLinhas1.SelectedIndex = 0;
            cbLinhas2.SelectedIndex = 0;
        }

        private void btnSair_Click(object sender, EventArgs e)
        { Close(); }

        private void btSave_Click(object sender, EventArgs e)
        {
            string dataIn = Convert.ToDateTime(dtInicio.Text).ToString("dd.MM.yyyy");
            string dataFim = Convert.ToDateTime(dtFim.Text).ToString("dd.MM.yyyy");

            if (dtDados.Rows.Count > 0)
            {
                _dvDados.RowFilter =
                    string.Format("[Linha] >= '{0}' and [Linha] <= '{1}' and [Data] >= '#{2}#' and [Data] <= '#{3}#'",
                    cbLinhas1.SelectedItem, cbLinhas2.SelectedItem, dataIn, dataFim);

                _dvDados.Sort = "Id Asc";

                if (_dvDados.Count > 0)
                {
                    SaveFileDialog svFile = new SaveFileDialog
                    {
                        AddExtension = true,
                        Filter = "Vírgula Flutuante(*.csv)|*.csv|Ficheiro de Texto(*.txt)|*.txt"
                    };
                    if (svFile.ShowDialog() == DialogResult.OK) dataTableToTextFile(_dvDados, svFile.FileName);
                }
                else
                    MessageBox.Show("Não tem dados para gravar.");
            }
            else
                MessageBox.Show("Não tem dados para gravar.");
        }

        #region "Converts the Given Datatable to TextFile"

        public void dataTableToTextFile(DataView dvToText, string filePath)
        {
            try
            {
                StreamWriter sw = new StreamWriter(filePath);

                //Columns Names
                for (int i = 1; i < dvToText.Table.Columns.Count; i++) sw.Write(dvToText.Table.Columns[i].ColumnName + ";");
                sw.Write("\n");

                foreach (DataRowView row in dvToText)
                {
                    for (int i = 1; i < dvToText.Table.Columns.Count; i++)
                        sw.Write(row[i].ToString().Replace("\r\n", " ") + ";");
                    sw.Write("\n");
                }
                sw.Close();
                MessageBox.Show("Ficheiro Gravado com sucesso", "");
            }
            catch (Exception ex)
            { MessageBox.Show(ex.Message); }
        }
        #endregion
    }
}